开始之前:
1. 识别物体输出相关数据
在物体识别功能下,HUSKYLENS 2 可识别视野内的物体(是80种固定类别物体,详见物体识别使用说明)并将相关数据通过串口打印输出,可以读取的数据有:画面中可识别物体的总数、靠近HUSKYLENS 2 摄像头画面中心的物体ID号、检测到的第一个物体。
示例程序如下。
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
if ((huskylens.available(ALGORITHM_OBJECT_RECOGNITION))) {
Serial.println((String("检测的物体总数:") + String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))));
Serial.println((String("靠近中心的物体的名称") + String((RET_ITEM_STR(huskylens.getCachedCenterResult(ALGORITHM_OBJECT_RECOGNITION), Result, name)))));
Serial.println((String("检测到第一个物体的名称") + String((RET_ITEM_STR(huskylens.getCachedResultByIndex(ALGORITHM_OBJECT_RECOGNITION, 1 - 1), Result, name)))));
}
delay(500);
}
** 运行结果:**可输出识别到的物体总数,可按要求输出相应物体ID号。
2. 获取画面中指定物体的相关数据
HUSKYLENS 2 识别物体后,可获取画面中指定物体的相关数据。例如,判断某个已学习的物体是否在画面中、指定物体的名称、可获取画面中同类物体的数量,当画面中出现多个同类物体时,可指定获取其中某个物体的相关参数,包括名称、X/Y坐标、宽度、高度。
示例程序如下:
#include "DFRobot_HuskylensV2.h"
// 创建对象
HuskylensV2 huskylens;
// 主程序开始
void setup() {
Serial.begin(9600);
Wire.begin();
while (!huskylens.begin(Wire)) {
delay(100);
}
huskylens.switchAlgorithm(ALGORITHM_OBJECT_RECOGNITION);
}
void loop() {
huskylens.getResult(ALGORITHM_OBJECT_RECOGNITION);
Serial.println((String("检测的物体总数:") + String((huskylens.getCachedResultNum(ALGORITHM_OBJECT_RECOGNITION)))));
if (((huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1) != NULL))) {
Serial.println((String("ID1物体的数量:") + String((huskylens.getCachedResultNumByID(ALGORITHM_OBJECT_RECOGNITION, 1)))));
Serial.println((String("ID1物体的名称:") + String((RET_ITEM_STR(huskylens.getCachedResultByID(ALGORITHM_OBJECT_RECOGNITION, 1), Result, name)))));
Serial.println((String("检测到第一个ID为1的物体中心坐标:") + String((String((String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_OBJECT_RECOGNITION, 1, 1-1), Result, xCenter))) + String(","))) + String((RET_ITEM_NUM(huskylens.getCachedIndexResultByID(ALGORITHM_OBJECT_RECOGNITION, 1, 1-1), Result, yCenter)))))));
}
delay(500);
}
**运行结果:**如图所示,可获取到画面中的物体总数、画面中ID1物体数量、名称,以及检测到的第一个ID1物体的坐标位置。